const api = require("../../config/api")
const util = require("../../utils/util")

Page({
  data: {
    current: 1,  // 切换登录和注册的条件
    codeText: '获取验证码',
    timer: null,
    countdown: 5,
    loginPhone: '',
    loginPassword: '',
    phone: '', // 手机号
    regPassword: '', // 注册密码
    confirmPassword: '',
    code: '',
  },

  // 切换登录/注册
  click: function (e) {
    let code = e.currentTarget.dataset.code;
    this.setData({
      current: code
    });
  },
 
  // 注册手机号校验
  checkPhone(e){
    this.data.phone = e.detail.value
    const phoneRegex = /^1[3-9]\d{9}$/;
    if(!this.data.phone ||!phoneRegex.test(this.data.phone)){
      wx.showToast({
        title: '手机号输入错误',
        icon:'error'
      })
      return;
    }
  },
  
  // 密码规则校验
  checkPassword(e){
    // const password = e.detail.value;
    // const regex = /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&\/,#>])[A-Za-z\d@$!%*?&\/,#>]{8,}$/;
    // if (!regex.test(password)) {
    //   wx.showModal({
    //     title: '提示',
    //     content: '密码要求8位，至少包含一个大写字母、一个小写字母、一个数字和一个特殊字符',
    //     showCancel: false
    //   });
    //   // 控制注册按钮点击无法提交
    //   this.data.passwordInvalid = true;
    // }
    // console.log(e.detail.value);
  },
  
  // 获取验证码
  getCode(){
    if (this.data.timer) return;
    // 开始倒计时
    this.setData({
      codeText: this.data.countdown + 's',
      timer: setInterval(() => {
        if (this.data.countdown <= 1) {
          clearInterval(this.data.timer);
          this.setData({
            codeText: '获取验证码',
            timer: null,
            countdown: 5
          });
          return;
        }
        this.setData({
          countdown: this.data.countdown - 1,
          codeText: (this.data.countdown - 1) + 's'
        });
      }, 1000)
    });
    // TODO: 调用发送验证码接口
  },
  
  // 注册按钮  
  registerSubmit(e){
    console.log(e.detail.value)
    // es6语法里面的对象结构赋值的方式获取对象里面的参数
    const {phone,code,password,confirmPassword} = e.detail.value
    if(!phone||!code||!password||!confirmPassword){
        wx.showToast({
          title: '请填写完整信息',
          icon:'error'
        })
        return  // 直接结束当前函数，让代码不继续往下执行
    }
    if(password!==confirmPassword){
       wx.showToast({
         title: '两次密码不一致',
         icon:'error'
       })
       return;
    }
    // 调用密码检查函数
    const fakeEvent = { detail: { value: password } };
    this.checkPassword(fakeEvent);
    // 检查是否弹出了密码不规范的提示框
    console.log("this.data.passwordInvalid==============",this.data.passwordInvalid);
    if (this.data.passwordInvalid) {
      return;
    }
    
    // 调用注册接口
    wx.showLoading({
      title: '注册中...',
    })
    
    // 模拟注册验证
    if (phone === '18296995790') {
      setTimeout(() => {
        wx.hideLoading()
        // 模拟成功响应
        const userData = {
          id: 1,
          phoneNumber: '18296995790',
          nickName: '张角',
          avatarUrl: '../../../static/images/avatar.png',
          token: 'mock_token_' + Date.now(),
          createTime: new Date().toISOString()
        }
        
        // 存储用户信息和token
        wx.setStorageSync('userInfo', userData);
        wx.setStorageSync('token', userData.token);
        
        wx.showToast({
          title: '注册成功',
          icon:'success',
          duration: 2000,
          success:function(){
            setTimeout(()=>{
              wx.switchTab({
                url: '/pages/index/index',
              })
            },2000)
          }
        })
      }, 500);
    } else {
      setTimeout(() => {
        wx.hideLoading()
        wx.showToast({
          title: '注册失败，请稍后再试',
          icon:'error'
        })
      }, 300);
    }
  },
  
  // 跳转忘记密码页面
  goForget(){
    wx.navigateTo({
      url: '/pages/forget/forget',
    })
  },
  
  /**账号密码登录*/
  loginSubmit(e){
    const { username, password } = e.detail.value;
    // 1. 表单校验
    if (!username || !password) {
      util.showToast.error('请输入账号和密码');
      return;
    }
    // 加载防抖
    wx.showLoading({
      title: '正在登录...',
    })
    
    // 检查是否是已绑定手机号的用户
    const userInfo = wx.getStorageSync('userInfo');
    if (userInfo && userInfo.phoneNumber === username && userInfo.password === password) {
      // 已绑定用户登录
      setTimeout(() => {
        wx.hideLoading()
        // 更新登录状态
        userInfo.token = 'mock_token_' + Date.now();
        wx.setStorageSync('userInfo', userInfo);
        wx.setStorageSync('token', userInfo.token);
        
        util.showToast.success('登录成功');
        //跳转到首页去
        wx.switchTab({
          url: '/pages/index/index',
        })
      }, 500);
    } else {
      // 模拟登录验证（原有逻辑）
      if (username === '18296995790' && password === '123') {
        setTimeout(() => {
          wx.hideLoading()
          // 模拟成功响应
          const userData = {
            id: 1,
            phoneNumber: '18296995790',
            nickName: '张角',
            avatarUrl: '/static/images/avatar/avatar.png',
            token: 'mock_token_' + Date.now(),
            createTime: new Date().toISOString()
          }
          // 存储用户信息和token
          wx.setStorageSync('userInfo', userData);
          wx.setStorageSync('token', userData.token);
          //跳转到首页去
          wx.switchTab({
            url: '/pages/index/index',
          })
        }, 500);
      } else {
        setTimeout(() => {
          wx.hideLoading()
          wx.showToast({
            title: '手机号或密码错误',
            icon: 'error'
          })
        }, 300);
      }
    }
  },
  
  // 调用wx.getUserProfile接口
  wxLogin() {
    // 加载防抖
    wx.showLoading({
      title: '正在登录...',
    })
    let that = this
    wx.getUserProfile({
      desc: '获取授权',
      success: function (res) {
        console.log("res.userInfo================",res.userInfo)
        const dataMsg = {
          code: that.data.code,// 将wx.login中的code一并传入到后台
          avatar:res.userInfo.avatarUrl,
          nickName:res.userInfo.nickName
        };
        // 模拟微信登录成功
        setTimeout(() => {
          wx.hideLoading()
          const userData = {
            id: 1,
            phoneNumber: '18296995790',
            nickName: res.userInfo.nickName || '张角',
            avatarUrl: res.userInfo.avatarUrl || '../../../static/images/avatar.png',
            token: 'mock_token_' + Date.now(),
            createTime: new Date().toISOString()
          }
          
          // 存储用户信息和token
          wx.setStorageSync('userInfo', userData);
          wx.setStorageSync('token', userData.token);
          
          // 跳转到首页
          wx.switchTab({
            url: '/pages/index/index',
          })
        }, 500);
      },
      fail: function(err) {
        wx.hideLoading()
        wx.showToast({
          title: '微信登录失败',
          icon: 'error'
        })
      }
    })
    // 调用wx.login接口
    wx.login({
      success: function (res) {
        that.setData({
          code: res.code// 将code复制给data变量
        })
      }
    })
  },
}); 